/* 按钮样式
  .imhjh-btn         按钮基础（必写）
  .#{color}       按钮颜色
  .#{color}.plain 按钮颜色 朴素
  .#{size}        按钮尺寸
  .#{shape}       按钮形状
  .#{disabled}    按钮禁用

  color: red, blue, green, gold, 默认白色

  plain: plain (素色), 默认纯色
  
  size: medium（36px）, mini（26px）, 默认32px

  shape: round（最大圆角）, circle（圆型）, 默认 2px

  disabled: .disabled（非button元素），[disabled]（button元素），默认非禁用
*/

/* 参考 var.scss 定义的颜色 */

/* 颜色列表 */
$color-list: "blue", "green", "red", "gold", "orange", "grey";

@mixin var($color) {
  &.#{$color} {
    --c: #fff;
    --bg: var(--#{$color}6);
    --bd: var(--#{$color}6);
    &:hover {
      --c: #fff;
      --bg: var(--#{$color}5);
      --bd: var(--#{$color}5);
    }
    @if $env == "PC" {
      &:active {
        --c: #fff;
        --bg: var(--#{$color}7);
        --bd: var(--#{$color}7);
      }
    }
  }
  /* plain */
  &.#{$color}.plain {
    --c: var(--#{$color}6);
    --bg: var(--#{$color}1);
    --bd: var(--#{$color}3);
    &:hover {
      --c: #fff;
      --bg: var(--#{$color}6);
      --bd: var(--#{$color}6);
    }
    @if $env == "PC" {
      &:active {
        --c: #fff;
        --bg: var(--#{$color}7);
        --bd: var(--#{$color}7);
      }
    }
  }
  /* ghost */
  &.#{$color}.ghost {
    --c: var(--#{$color}6);
    --bg: transparent;
    --bd: transparent;
    &:hover {
      --c: var(--#{$color}5);
      --bg: transparent;
      --bd: transparent;
    }
    @if $env == "PC" {
      &:active {
        --c: var(--#{$color}7);
        --bg: transparent;
        --bd: transparent;
      }
    }
  }
  /* sink */
  &.#{$color}.sink {
    --c: var(--#{$color}6);
    --bg: transparent;
    --bd: transparent;
    &:hover {
      --c: var(--#{$color}5);
      --bg: #e4e7ed;
      --bd: #e4e7ed;
    }
    @if $env == "PC" {
      &:active {
        --c: var(--#{$color}7);
        --bg: #e4e7ed;
        --bd: #e4e7ed;
      }
    }
  }
}

/* 按钮基础样式 */
@mixin btn {
  --btn-size: 32px;
  display: inline-block;
  outline-style: none;
  font-weight: 400;
  white-space: nowrap;
  text-align: center;
  border: 1px solid transparent;
  cursor: pointer;
  transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
  user-select: none;
  touch-action: manipulation;
  height: var(--btn-size);
  line-height: 30px;
  padding: 0 10px;
  font-size: 14px;
  border-radius: 2px;
  color: var(--c);
  background: var(--bg);
  border-color: var(--bd);
  &:not(.ghost),
  &:not(.sink) {
    box-shadow: 0 2px #00000004;
  }
}

/* shape / size */
@mixin sts {
  // 圆形
  &.circle {
    border-radius: 50%;
    width: var(--btn-size);
    padding: 0;
  }
  // 大圆角
  &.round {
    border-radius: var(--btn-size);
  }
  // 小尺寸
  &.mini {
    --btn-size: 26px;
    line-height: 24px;
  }
  // 大尺寸
  &.medium {
    --btn-size: 36px;
    line-height: 34px;
  }
}

.imhjh-btn {
  /* 设置 var */
  --c: var(--color1);
  --bg: #fff;
  --bd: #d9d9d9;
  &:hover {
    --c: var(--blue5);
    --bg: #fff;
    --bd: var(--blue5);
  }
  @if $env == "PC" {
    &:active {
      --c: var(--blue7);
      --bg: #fff;
      --bd: var(--blue7);
    }
  }
  &.ghost {
    --c: var(--color1);
    --bg: transparent;
    --bd: transparent;
    &:hover {
      --c: var(--blue5);
      --bg: transparent;
      --bd: transparent;
    }
    @if $env == "PC" {
      &:active {
        --c: var(--blue7);
        --bg: transparent;
        --bd: transparent;
      }
    }
  }
  &.sink {
    --c: var(--color1);
    --bg: transparent;
    --bd: transparent;
    &:hover {
      --c: var(--blue5);
      --bg: #e4e7ed;
      --bd: #e4e7ed;
    }
    @if $env == "PC" {
      &:active {
        --c: var(--blue7);
        --bg: #e4e7ed;
        --bd: #e4e7ed;
      }
    }
  }
  @each $color in $color-list {
    @include var($color);
  }
  &:disabled {
    text-shadow: none;
    box-shadow: none;
    cursor: not-allowed;
  }
  &.is-disabled {
    --c: var(--grey4);
    --bg: #f5f5f5;
    --bd: #d9d9d9;
    cursor: not-allowed;
    &:hover {
      --c: var(--grey4);
      --bg: #f5f5f5;
      --bd: #d9d9d9;
    }
    @if $env == "PC" {
      &:active {
        --c: var(--grey4);
        --bg: #f5f5f5;
        --bd: #d9d9d9;
      }
    }
    &.ghost {
      --bg: transparent;
      --bd: transparent;
      &:hover {
        --bg: transparent;
        --bd: transparent;
      }
      @if $env == "PC" {
        &:active {
          --bg: transparent;
          --bd: transparent;
        }
      }
    }
    &.sink {
      --bg: transparent;
      --bd: transparent;
      &:hover {
        --bg: transparent;
        --bd: transparent;
      }
      @if $env == "PC" {
        &:active {
          --bg: transparent;
          --bd: transparent;
        }
      }
    }
  }

  /* 属性 */
  @include btn;
  @include sts;
}
